package com.leigq.www.mybatisplusstudy.domain.controller;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.leigq.basaltools.bean.Response;
import com.leigq.www.mybatisplusstudy.domain.entity.Staff;
import com.leigq.www.mybatisplusstudy.domain.service.IStaffService;
import com.leigq.www.mybatisplusstudy.enums.GenderEnum;
import com.leigq.www.mybatisplusstudy.param.AddStaffsParam;
import com.leigq.www.mybatisplusstudy.vo.ListStaffsCustomVO;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 * 员工 Controller
 * </p>
 *
 * @author leigq
 * @since 2019-06-14
 */
@RequestMapping("/staffs")
@RequiredArgsConstructor
@RestController
public class StaffController {

    private final IStaffService staffServiceImpl;

    /**
     * 添加员工1 json
     *
     * @author ：LeiGQ <br>
     * @date ：2019-06-14 15:03 <br>
     * <p>
     */
    @PostMapping("/add1")
    public Response<Boolean> addStaffs1(@RequestBody AddStaffsParam addStaffsParam) {
        return Response.success(staffServiceImpl.saveStaffs(addStaffsParam));
    }


    /**
     * 添加员工2 form表单
     *
     * @author ：LeiGQ <br>
     * @date ：2019-06-14 15:03 <br>
     * <p>
     */
    @PostMapping("/add2")
    public Response<Boolean> addStaffs2(AddStaffsParam addStaffsParam) {
        return Response.success(staffServiceImpl.saveStaffs(addStaffsParam));
    }



    /**
     * 修改员工信息
     *
     * @author ：LeiGQ <br>
     * @date ：2019-06-14 15:03 <br>
     * <p>
     */
    @PutMapping("/update/{id}")
    public Response<Boolean> updateStaffs(@PathVariable Long id) {
        return Response.success(staffServiceImpl.updateStaffs(id));
    }

    /**
     * 查询员工列表
     *
     * @author ：LeiGQ <br>
     * @date ：2019-06-14 15:03 <br>
     * <p>
     */
    @GetMapping("/list")
    public Response<List<Staff>> listStaffs() {
        return Response.success(staffServiceImpl.listStaffs());
    }


    /**
     * 查询员工列表，根据性别
     *
     * @author ：LeiGQ <br>
     * @date ：2019-06-14 15:03 <br>
     * <p>
     */
    @GetMapping("/list/{gender}")
    public Response<List<Staff>> listStaffsByGender(@PathVariable GenderEnum gender) {
        return Response.success(staffServiceImpl.listStaffsByGender(gender));
    }


    /**
     * 查询员工列表，使用 Wrapper 自定义SQL
     *
     * @author ：LeiGQ <br>
     * @date ：2019-06-14 15:03 <br>
     * <p>
     */
    @GetMapping("/list/custom")
    public Response<IPage<ListStaffsCustomVO>> listStaffsCustom() {
        return Response.success(staffServiceImpl.listStaffsCustom());
    }

}
